package ooday06;
// 匿名内部类的演示
public class NstInnerClassDemo {
    public static void main(String[] args) {
         // Aoo o1 = new Aoo(); 编译错误 抽象类不允许new
        Aoo o1 = new Aoo() {}; // 同时发生 向上造型
        // 1、系统默认创建了Aoo的一个派生类 但是没有名字
        // 2、还为该派生类创建了一个对象 名为 o1
        // —— new Aoo() {}; 是在创建 Aoo的派生类的对象
        // 向上造型 为 Aoo 类型
        // 3、大括号中的为派生类的类体
        Aoo o4 = new Aoo() {};
        // 1、系统默认创建了Aoo的一个派生类 但是没有名字
        // 2、还为该派生类创建了一个对象 名为 o2
        // 向上造型 为 Aoo 类型
        // 3、大括号中的为派生类的类体

        Aoo o2 = new Coo(); // 相当于 上面的
        Aoo o3 = new Coo(); // 能建很多

        Boo o5 = new Boo(){
            void show(){
                System.out.println("showshow");
            }
        };
        // 1、创建了Boo 的派生类 但是没有名字
        // 2、为该派生类创建了一个对象 名为 o5 向上造型 Boo
        // 3、大括号中的为派生类的类体
        o5.show(); // 调用 Boo show 方法
    }
}

abstract class Aoo{

}

class Coo extends Aoo{

}

abstract class Boo{
    abstract void show();
}
